package day06

import org.apache.spark.rdd.RDD
import org.apache.spark.{Accumulator, SparkConf, SparkContext}

object AccumulatorDemo1 {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setAppName("accu").setMaster("local[*]")
    val sc = new SparkContext(conf)

    val nums: RDD[Int] = sc.parallelize(List(1,2,3,4,5,6),2)
    //创建一个Class文件，在里面创建自定义类MyAccumulatorTest，该类要继承AccumulatorV2，并且重写该类的一些方法。
    val accumulator = new MyAccumulatorTest()
    //注册累加器
    sc.register(accumulator, "acc")
    //切记不要调用transformation算子进行累加，这样会出现无法累加的情况
    nums.foreach(x => accumulator.add(x))
    println(accumulator.value)
    sc.stop()

  }
}
